import numpy as np
import os
from PIL import Image

#---------------------------------------------------#
#   获得根路径
#---------------------------------------------------#
def getRootPath():
    # 获取文件目录
    curPath = os.path.abspath(os.path.dirname(__file__))
    # 获取项目根路径，内容为当前项目的名字
    rootPath = curPath[:curPath.find('model') + len('model')]
    return rootPath

#---------------------------------------------------------#
#   将图像转换成RGB图像，防止灰度图在预测时报错。
#   代码仅仅支持RGB图像的预测，所有其它类型的图像都会转化成RGB
#---------------------------------------------------------#
def cvtColor(image):
    if len(np.shape(image)) == 3 and np.shape(image)[2] == 3:
        return image 
    else:
        image = image.convert('RGB')
        return image 

#---------------------------------------------------#
#   对输入图像进行resize
#---------------------------------------------------#
def resize_image(image, size, letterbox_image):
    iw, ih  = image.size
    w, h    = size
    if letterbox_image:
        scale   = min(w/iw, h/ih)
        nw      = int(iw*scale)
        nh      = int(ih*scale)
        # resize
        image   = image.resize((nw,nh), Image.BICUBIC)
        new_image = Image.new('RGB', size, (128,128,128))    # 不够的区域填充灰色(128,128,128) 也许填充平均值会好一点？
        new_image.paste(image, ((w-nw)//2, (h-nh)//2))       # 将原图像放到中心位置
    else:
        new_image = image.resize((w, h), Image.BICUBIC)      # 返回失真图
    return new_image


#---------------------------------------------------#
#   获得学习率
#---------------------------------------------------#
def get_lr(optimizer):
    for param_group in optimizer.param_groups:
        return param_group['lr']

# 显而易见 就是把颜色进行调整
def preprocess_input(image):
    image /= 255.0 
    return image


# 对图像进行去噪
def denoising(img):
    # 调用均值滤波函数
    result = cv2.blur(img, (5, 5))  # 传入读取的图像和核尺寸


